package com.yupi.yuimagesearchmcp.tool;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Service
public class ImageSearchTool {

    // 替换为你的 Pixabay API Key
    private static final String API_KEY = "50339539-d336b6d339a22bad9020e39d5";

    // Pixabay 搜索接口
    private static final String API_URL = "https://pixabay.com/api/";

    @Tool(description = "Search image from Pixabay by keyword")
    public String searchImage(@ToolParam(description = "Search query keyword") String query) {
        try {
            return String.join(",", searchImages(query));
        } catch (Exception e) {
            return "Error searching image: " + e.getMessage();
        }
    }

    /**
     * 搜索图片列表，返回 web 格式的图片 URL 列表
     *
     * @param query 查询关键词
     * @return 图片地址列表
     */
    public List<String> searchImages(String query) {
        // 设置请求参数
        Map<String, Object> params = new HashMap<>();
        params.put("key", API_KEY);
        params.put("q", query);
        params.put("lang", "zh");
        params.put("image_type", "photo");
        params.put("per_page", 5);
        params.put("safesearch", "true");

        // 发送 GET 请求
        String response = HttpUtil.createGet(API_URL)
                .form(params)
                .execute()
                .body();

        // 解析 JSON，提取 hits 数组中每张图的 webformatURL 字段
        return JSONUtil.parseObj(response)
                .getJSONArray("hits")
                .stream()
                .map(obj -> (JSONObject) obj)
                .map(photo -> photo.getStr("webformatURL"))
                .filter(StrUtil::isNotBlank)
                .collect(Collectors.toList());
    }
}
